package ift605.EquationWithTrainingAgents.struct;

import ift605.EquationWithTrainingAgents.behavior.common.DeriverBehavior;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import udes.ds.agent.AbstractEquation;

public class LearningMessage implements Serializable{
	private static final long serialVersionUID = 1L;
	public static final String UPDATE_RANGE = "UpdateRange"; // TODO EXPLAIN AND CHANGE NAME
	public static final String VERIFY = "Verify";					// TODO explain meaning
	public static final String VERIFY_ANSWER = "VerifyAnswer";	// TODO explain meaning
	public static final String DERIVE = "Derive";					// TODO explain meaning
	public static final String ASK_TO_REGISTER = "AskToRegister";	// TODO explain meaning
	public static final String FINAL_ANSWER = "FinalAnswer";		// TODO explain meaning
	//public static String REQUEST = "Derivate";
	
	public boolean isResolved = false;
	public boolean tryDerive = false;
	public List<DerivationStep> derivationSteps;
	public int currentStep;
	public AbstractEquation base;
	public AbstractEquation derived;
	public int requestID;
	
	public LearningMessage(boolean aTryDerive, AbstractEquation aBase, int aRequestID)
	{
		isResolved = false;
		tryDerive = aTryDerive;
		derivationSteps = new ArrayList<DerivationStep>();
		base = aBase;
		derived = (AbstractEquation) DeriverBehavior.Clone(aBase);
		requestID = aRequestID;
		currentStep = 0;
	}

}
